1. Technical Field
The present invention is generally directed to an improved data processing system. More specifically, the present invention is directed to a method and apparatus for supporting connection establishment operations in an offload network adapter.
2. Description of Related Art
In known systems, the operating system communicates with a conventional network interface only in terms of data transfer by providing the network interface with two queues of buffers. A first queue of buffers is made up of descriptors that point to ready-made data packets in host memory that are ready for transmission. A second queue of buffers includes descriptors that point to buffers filled with unprocessed data packets in host memory that have been received for processing. The network interface provides a memory-mapped input/output (I/O) interface for informing the network interface where the queues are in physical memory and provides an interface for some control information, such as what interrupt to generate when a data packet arrives.
Network protocol processing for conventional network interfaces is performed entirely within the host with only data packets being provided to the network adapter for transmission. However, network link speeds have increased faster than the growth of microprocessor performance. As a result, the host processor becomes burdened with large amounts of TCP/IP protocol processing, reassembling out-of-order data packets, resource-intensive memory copies, and interrupts. In some high-speed networks, the host processor has to dedicate more processing to handle the network traffic than to the applications it is running. Thus, the data packet is processed in the host at a lower rate than the network speed.
In order to address this problem, recent emphasis has been on offloading the processing of the TCP/IP protocols from the host processor to the hardware on the network adaptor. Such network adapters, which are sometimes referred to as an intelligent network adapter or a TCP/IP Offload Engine (TOE), can be implemented with a network processor and firmware, specialized ASICs, or a combination of both. These network adapters not only offload host processor processing so that application performance is increased, but also enable communication with new types of networks and devices, such as iSCSI storage area networks (SANs) and high performance network attached storage (NAS) applications.
While these network adapters offload the TCP/IP protocol processing of data packets, much of the processing that is needed for communication over networks is still maintained within the host system. For example, the host system is still responsible for establishing connections, maintaining state information for each of the established connections, handling memory management, and the like. Thus, the host system still experiences processor load due to these operations having to be performed in the host system and furthermore, due to the amount of communication that is required between the host system and the network adapter to perform these operations in the host system. Thus, it would be beneficial to have an apparatus and method for improving the operation of a network adapter such that the processing load on the host system is minimized and more of the processing is performed in the network adapter.